從我的文章就大慨可以看出,我的內容很偏資料工程,而不是所謂的資料科學,更沒有講到半點ML或是DP。因為我是一位熱愛資料處理的(資料工程師)數據領域黑手XD。雖然不是帥帥的資料科學家,但只要想到一個submit,數十甚至是數百台節點便會一起協同運作,處理動則數百TB的資料,就忍不住揚起嘴角。歡迎同好多多交流!先前有人問過現階段資料工程師該往哪些方向準備,或是該去摸哪些技能。這邊有一篇我在論壇討論的回應:
Re: [請益] 值得花十萬到巨匠 學大數據軟體嗎?
在這裡稍微整理一下各種工具跟大家做個分享:
Apache Flume
Apache Kafka
Logstash
這類負責在前接接資料的工具目前以streaming型式為大宗。Flume比較適合整合Hadoop生態系; Kafka與SMACK整合的很好,但我認為他算是泛用的架構;logstash則是ELK自成一派。當然這不是絕對,而且可以互相接來接去,以前做過一個案子有Kafka->Flume->HDFS/HBase/Avro串來串去。現在的案子logstash也有從kafka取資料。我感覺目前這3套可以滿足大部分的streaming收資料的需求。Flink沒時間碰但是他應該算Streaming Processing
選一套的話:我選Kafka。搭配語言:Java Client
Apache MRv2(MapReduce)
Apache Spark
這兩個是非圈人內也常常聽到的term,但要講的仔細也是好幾本書的內容了.. 例如批次處理該用Spark好還是MapReduce。串流處理的話我聽過Spark Streaming,那跟Storm又差在哪?什麼是micro-batch
?(有看前幾天的Streaming篇的肯定都知道XD)
但有點尷尬的是,Spark用Java(即便是 Lambda)寫起來有點憋屈...所以我會推薦初學者可以用Spark+Python+jupiter
。許多MOOC的線上課程都是用Python教授。想讓自己被Functional Programming玩的,可以選Spark in Scala然後跟我一起跳坑(往好處想是看Spark原始碼比較方便?)。
選一套的話,我選Spark。搭配語言:自行找坑跳
Apache Hive
Apache Impala (也開源了)
Spark SQL
Amazon Athena
選一套的話,我選SparkSQL/Impala 搭配SQL語言以及各種JDBC/ODBC
Apache HDFS
Apache Kafka
Amazon S3
Hadoop系統大多會用到HDFS,但也可以把資料暫存在Kafka上,處理完後就直接送進NoSQL(但別忘了Spark Streaming需要檔案系統放checkpoint,而HDFS是常用解),另外S3也是好物,只是沒機會碰到。
選一套的話,還是從HDFS+Java API開始吧
Apache HBase
MongoDB
ElasticSearch
Apache Cassandra
Redis
恩...沒有MySQL、MariaDB、PostgreSQL、MS SQL也沒有Oracle XDDD。上面這幾套NoSQL我都很愛,該選用哪個資料庫有時候就端看應用了:Hadoop最常見的就是搭配HBase,想下SQL上面可以套一個Phoenix,設計時就是在玩Primary Key;ElasticSearch是全文檢索斷詞那方面的應用(底層是大名鼎鼎的Apache Lucene),搭配一個Kibana整個好用;Cassandra與Spark整合良好,去正規化的Data modeling與P2P的架構是我的愛。
選一套的話,我私心選Cassandra + Java/Scala Client
Zookeeper
Hue
Yarn
Mesos
有太多周邊了商品了XDDD,Zookeeper可以要懂一些,HBase跟Kafka都有用。YARN是搭配Hadoop的老牌管理器,而Mesos很夯(SMACK中的'M')。
第一天從這張賀圖開始,就從這張賀圖結束吧。終於在磕磕碰碰中完成了30天的鐵人賽,但我認為這30天的付出絕對值回票價。從使用者或API caller轉換角色,開始思考為何API該這麼設計,或是必須用清楚的方式講解函式時,可以從中收穫非常多,至少對我來說。過程中也發現了許多原本自以為懂,但真的要講也沒那麼清楚的概念,好好的複習了一把!並且寫了七十幾個大大小小Snippet。謝了,我的第一次鐵人賽!各位鐵人,有空再見。預祝新年愉快。
Joechh
下臺一鞠躬